/*
输入内容弹框
使用方法1：
MPageLoading(true);
setTimeout(() => {
	MPageLoading(false);
}, 2000);
使用方法2：
MPageLoading(true, {
	closeNumber: 2
});
setTimeout(() => {
	MPageLoading.setText('正在加载中');
	MPageLoading(false);
	setTimeout(() => {
		MPageLoading(false);
	}, 2000);
}, 2000);
*/

import {createApp} from "vue";
import LoadingComponent from "./Loading.vue";


let oLoading = null;
let closeNumber = 1;

/**
 * 设置页面是否显示加载中
 * @param {Boolean} state 状态：true为显示，false为关闭
 * @param {Object} options 初始化时候的状态。options.text默认文本为空；options.closeNumber需要关闭的次数，默认为1。
 * */
const MPageLoading = function (state, options = {
	text: '', // 提示文字
	closeNumber: 1, // 需要调多少次关闭，才能关闭
}) {
	if(state) {
		if(!oLoading) {
			const LoadingApp = createApp(LoadingComponent, {
				text: options.text || ''
			});
			oLoading = showLoading(LoadingApp);
			// 设置关闭次数
			closeNumber = options.closeNumber || 1;
		}
	} else {
		if(oLoading) {
			if(closeNumber == 1) {
				oLoading.hide();
				oLoading = null;
			} else {
				closeNumber--;
			}
		}
	}
}

/**
 * 设置加载中的文本
 * @param {String} text 加载中的文本
 * */
MPageLoading.setText = function (text) {
	oLoading.setText(text);
}

const showLoading = (app) => {
	const oFrag = document.createDocumentFragment();
	const vm = app.mount(oFrag);
	document.body.appendChild(oFrag);
	return vm;
}

export default MPageLoading;









